package gaej.example.contact.client;

import java.util.List;

import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.rpc.AsyncCallback;

public class UitvoeringDelegate {
    private MusicServiceAsync musicService = GWT.create(MusicService.class);
    UitvoeringGUI gui;
    
    void listUitvoeringen() {
    	
    	// verzamel de aanwezige dirigenten voor de gui
    	musicService.listDirigenten(new AsyncCallback<List<Dirigent>> () {
                    public void onFailure(Throwable caught) {
                        //gui.service_eventListMuziekstukkenFailed(caught);
                    	// lege lijst
                    	List<Dirigent> result = null;
                    	gui.service_dirigentenListRetrievedFromService(result);
                    }
        
                    public void onSuccess(List<Dirigent> result) {
                        gui.service_dirigentenListRetrievedFromService(result);
                    }
        }//end of inner class
        );//end of listMuziekstuks method call.    	

       	// verzamel de aanwezige muziekstukken
        musicService.listMuziekstukken(new AsyncCallback<List<Muziekstuk>> () {
                    public void onFailure(Throwable caught) {
                    	List<Muziekstuk> result = null;
                    	gui.service_muziekstukkenListRetrievedFromService(result);
                    }
        
                    public void onSuccess(List<Muziekstuk> result) {
                        gui.service_muziekstukkenListRetrievedFromService(result);
                        
                    }
        }//end of inner class
        );//end of listMuziekstuks method call.    	
    	
        musicService.listUitvoeringen(new AsyncCallback<List<Uitvoering>> () {
                    public void onFailure(Throwable caught) {
                        gui.service_eventListUitvoeringenFailed(caught);
                    }
        
                    public void onSuccess(List<Uitvoering> result) {
                        gui.service_eventListRetrievedFromService(result);
                        
                    }
        }//end of inner class
        );//end of listUitvoerings method call.
    }
    
    void addUitvoering(final Uitvoering uitvoering) {
        musicService.addUitvoering(uitvoering, new AsyncCallback<Void> () {
            public void onFailure(Throwable caught) {
                gui.service_eventAddUitvoeringFailed(caught);
            }

            public void onSuccess(Void result) {
                gui.service_eventAddUitvoeringSuccessful();
            }
        }//end of inner class
        );//end of addUitvoering method call.        
    }

    void updateUitvoering(final Uitvoering uitvoering) {
        musicService.updateUitvoering(uitvoering, new AsyncCallback<Void> () {
            public void onFailure(Throwable caught) {
                gui.service_eventUpdateUitvoeringFailed(caught);
            }

            public void onSuccess(Void result) {
                gui.service_eventUpdateSuccessful();
            }
        }//end of inner class
        );//end of updateUitvoering method call.        
    }

    void removeUitvoering(final Uitvoering uitvoering) {
        musicService.removeUitvoering(uitvoering, new AsyncCallback<Void> () {
            public void onFailure(Throwable caught) {
                gui.service_eventRemoveUitvoeringFailed(caught);
            }

            public void onSuccess(Void result) {
                gui.service_eventRemoveUitvoeringSuccessful();
            }
        }//end of inner class
        );//end of updateUitvoering method call.        
    }
    
}
